Scroll to navigation

UTMP(5) п═я┐п╨п╬п╡п╬п╢я│я┌п╡п╬ п©я─п╬пЁя─п╟п╪п╪п╦я│я┌п╟ Linux UTMP(5)

п≤п°п╞

utmp, wtmp - п╥п╟п©п╦я│п╦ п╬ п╡я┘п╬п╢п╟я┘ п╡ я│п╦я│я┌п╣п╪я┐

п·п▒п≈п·п═

#include <utmp.h>

п·п÷п≤п║п░п²п≤п∙

п╓п╟п╧п╩ utmp п©п╬п╥п╡п╬п╩я▐п╣я┌ п©п╬п╩я┐я┤п╟я┌я▄ п╦п╫я└п╬я─п╪п╟я├п╦я▌ п╬ я┌п╬п╪, п╨я┌п╬ п╡ п╢п╟п╫п╫я▀п╧ п╪п╬п╪п╣п╫я┌ я─п╟п╠п╬я┌п╟п╣я┌ п╡ я│п╦я│я┌п╣п╪п╣. п÷п╬п╩я▄п╥п╬п╡п╟я┌п╣п╩п╣п╧, п╡ п╢п╟п╫п╫п╬п╣ п╡я─п╣п╪я▐ п╦я│п©п╬п╩я▄п╥я┐я▌я┴п╦я┘ я│п╦я│я┌п╣п╪я┐, п╪п╬п╤п╣я┌ п╠я▀я┌я▄ п╠п╬п╩я▄я┬п╬п╣ п╨п╬п╩п╦я┤п╣я│я┌п╡п╬, п©п╬я│п╨п╬п╩я▄п╨я┐ п╫п╣ п╡я│п╣ п©я─п╬пЁя─п╟п╪п╪я▀ п╦я│п©п╬п╩я▄п╥я┐я▌я┌ п©я─п╬я┌п╬п╨п╬п╩п╦я─п╬п╡п╟п╫п╦п╣ я┤п╣я─п╣п╥ utmp.

п÷я─п╣п╢я┐п©я─п╣п╤п╢п╣п╫п╦п╣: utmp п╫п╣ п╢п╬п╩п╤п╣п╫ п╠я▀я┌я▄ п╢п╬я│я┌я┐п©п╣п╫ п╫п╟ п╥п╟п©п╦я│я▄ п╨п╩п╟я│я│я┐ п©п╬п╩я▄п╥п╬п╡п╟я┌п╣п╩п╣п╧ "п╬я│я┌п╟п╩я▄п╫я▀п╣", я┌п╟п╨ п╨п╟п╨ п╪п╫п╬пЁп╦п╣ я│п╦я│я┌п╣п╪п╫я▀п╣ п©я─п╬пЁя─п╟п╪п╪я▀ (я┤я┌п╬ п╬я┤п╣п╫я▄ пЁп╩я┐п©п╬) п╥п╟п╡п╦я│я▐я┌ п╬я┌ п╣пЁп╬ я├п╣п╩п╬я│я┌п╫п╬я│я┌п╦. п▓я▀ я─п╦я│п╨я┐п╣я┌п╣ п©п╬п╩я┐я┤п╦я┌я▄ я└п╦п╨я┌п╦п╡п╫я▀п╣ я│п╦я│я┌п╣п╪п╫я▀п╣ я└п╟п╧п╩я▀ я│я┌п╟я┌п╦я│я┌п╦п╨п╦ п╦ п╦п╥п╪п╣п╫п╣п╫п╦я▐ п╡ я│п╦я│я┌п╣п╪п╫я▀я┘ я└п╟п╧п╩п╟я┘, п╣я│п╩п╦ п©я─п╣п╢п╬я│я┌п╟п╡п╦я┌п╣ п╩я▌п╠п╬п╪я┐ п©п╬п╩я▄п╥п╬п╡п╟я┌п╣п╩я▌ п╡п╬п╥п╪п╬п╤п╫п╬я│я┌я▄ п©п╦я│п╟я┌я▄ п╡ я└п╟п╧п╩ utmp п╨я─п╬п╪п╣ п╡п╩п╟п╢п╣п╩я▄я├п╟ п╦ пЁя─я┐п©п©я▀, п╨п╬я┌п╬я─п╬п╧ п©я─п╦п╫п╟п╢п╩п╣п╤п╦я┌ я└п╟п╧п╩.

п╓п╟п╧п╩ я│п╬я│я┌п╬п╦я┌ п╦п╥ я│п©п╦я│п╨п╟ п╥п╟п©п╦я│п╣п╧ я│ я┌п╦п©п╬п╪ я│я┌я─я┐п╨я┌я┐я─я▀ utmp, п╬п╠я┼я▐п╡п╩п╣п╫п╫п╬п╧ п╡ <utmp.h> (п╥п╟п╪п╣я┌п╦п╪, я┤я┌п╬ п╡ п╢п╟п╫п╫п╬п╪ я│п╩я┐я┤п╟п╣ я┐п╨п╟п╥п╟п╫п╬ я┌п╬п╩я▄п╨п╬ п╬п╢п╦п╫ п╦п╥ п╡п╟я─п╦п╟п╫я┌п╬п╡; п╢п╣я┌п╟п╩п╦ п╥п╟п╡п╦я│я▐я┌ п╬я┌ п╡п╣я─я│п╦п╦ libc):

/* п≈п╫п╟я┤п╣п╫п╦я▐ п©п╬п╩я▐ ut_type п©я─п╦п╡п╣п╢п╣п╫я▀ п╢п╟п╩п╣п╣ */
#define EMPTY         0 /* п╥п╟п©п╦я│я▄ п╫п╣ я│п╬п╢п╣я─п╤п╦я┌ п╨п╬я─я─п╣п╨я┌п╫п╬п╧ п╦п╫я└п╬я─п╪п╟я├п╦п╦

(я┌п╟п╨п╤п╣ п╫п╟п╥я▀п╡п╟п╣п╪п╟я▐ UT_UNKNOWN п╡ Linux) */ #define RUN_LVL 1 /* п╦п╥п╪п╣п╫п╣п╫п╦п╣ я┐я─п╬п╡п╫я▐ п╡я▀п©п╬п╩п╫п╣п╫п╦я▐ (я│п╪.
init(8)) */ #define BOOT_TIME 2 /* п╡я─п╣п╪я▐ п╥п╟пЁя─я┐п╥п╨п╦ я│п╦я│я┌п╣п╪я▀ (п╡ ut_tv) */ #define NEW_TIME 3 /* п╡я─п╣п╪я▐ п©п╬я│п╩п╣ п╦п╥п╪п╣п╫п╣п╫п╦я▐ я┤п╟я│п╬п╡ я│п╦я│я┌п╣п╪я▀
(п╡ ut_tv) */ #define OLD_TIME 4 /* п╡я─п╣п╪я▐ п╢п╬ п╦п╥п╪п╣п╫п╣п╫п╦я▐ я┤п╟я│п╬п╡ п╡ я│п╦я│я┌п╣п╪п╣
(п╡ ut_tv) */ #define INIT_PROCESS 5 /* п©я─п╬я├п╣я│я│ п╥п╟п©я┐я┴п╣п╫ init(8) */ #define LOGIN_PROCESS 6 /* п©я─п╬я├п╣я│я│-п╩п╦п╢п╣я─ я│п╣п╟п╫я│п╟ п╢п╩я▐ п©п╬п╩я▄п╥п╬п╡п╟я┌п╣п╩я▄я│п╨п╬пЁп╬ п╡я┘п╬п╢п╟ */ #define USER_PROCESS 7 /* п╫п╬я─п╪п╟п╩я▄п╫я▀п╧ п©я─п╬я├п╣я│я│ */ #define DEAD_PROCESS 8 /* п╥п╟п╡п╣я─я┬я▒п╫п╫я▀п╧ п©я─п╬я├п╣я│я│ */ #define ACCOUNTING 9 /* п╫п╣ я─п╣п╟п╩п╦п╥п╬п╡п╟п╫п╬ */ #define UT_LINESIZE 32 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status { /* я┌п╦п© п╢п╩я▐ ut_exit, п╬п©п╦я│п╟п╫ п╢п╟п╩п╣п╣ */
short int e_termination; /* п╨п╬п╢ п╥п╟п╡п╣я─я┬п╣п╫п╦я▐ п©я─п╬я├п╣я│я│п╟ */
short int e_exit; /* п╨п╬п╢ п╡я▀я┘п╬п╢п╟ п©я─п╬я├п╣я│я│п╟ */ }; struct utmp {
short ut_type; /* я┌п╦п© п╥п╟п©п╦я│п╦ */
pid_t ut_pid; /* PID п©я─п╬я├п╣я│я│п╟ п╡я┘п╬п╢п╟ п╡ я│п╦я│я┌п╣п╪я┐ */
char ut_line[UT_LINESIZE]; /* п╦п╪я▐ я┐я│я┌я─п╬п╧я│я┌п╡п╟ tty - "/dev/" */
char ut_id[4]; /* я│я┐я└я└п╦п╨я│ п╦п╪п╣п╫п╦ я┌п╣я─п╪п╦п╫п╟п╩п╟
п╦п╩п╦ inittab(5) ID */
char ut_user[UT_NAMESIZE]; /* п╦п╪я▐ п©п╬п╩я▄п╥п╬п╡п╟я┌п╣п╩я▐ */
char ut_host[UT_HOSTSIZE]; /* п╦п╪я▐ я┐п╥п╩п╟ п©я─п╦ я┐п╢п╟п╩я▒п╫п╫п╬п╪ п╡я┘п╬п╢п╣ п╦п╩п╦
п╡п╣я─я│п╦я▐ я▐п╢я─п╟ п╢п╩я▐ я│п╬п╬п╠я┴п╣п╫п╦п╧
я┐я─п╬п╡п╫я▐ п╡я▀п©п╬п╩п╫п╣п╫п╦я▐ */
struct exit_status ut_exit; /* п╨п╬п╢ п╡я▀я┘п╬п╢п╟ п©я─п╬я├п╣я│я│п╟,
п©п╬п╪п╣я┤п╣п╫п╫п╬пЁп╬ п╨п╟п╨ DEAD_PROCESS; п╫п╣
п╦я│п©п╬п╩я▄п╥я┐п╣я┌я│я▐ Linux init(8) */
/* п÷п╬п╩я▐ ut_session п╦ ut_tv п╢п╬п╩п╤п╫я▀ п╠я▀я┌я▄ п╬п╢п╦п╫п╟п╨п╬п╡п╬пЁп╬ я─п╟п╥п╪п╣я─п╟ п╦ п©я─п╦
32- п╦ п©я─п╦ 64-п╠п╦я┌п╫п╬п╧ п╨п╬п╪п©п╦п╩я▐я├п╦п╦. п╜я┌п╬ п©п╬п╥п╡п╬п╩я▐п╣я┌ п╦я│п©п╬п╩я▄п╥п╬п╡п╟я┌я▄ я└п╟п╧п╩я▀
п╢п╟п╫п╫я▀я┘ п╦ п©п╟п╪я▐я┌я▄ п╬п╢п╫п╬п╡я─п╣п╪п╣п╫п╫п╬ п╦ п╡ 32- п╦ п╡ 64-п╠п╦я┌п╫я▀я┘ п©я─п╦п╩п╬п╤п╣п╫п╦я▐я┘. */ #if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32
int32_t ut_session; /* ID я│п╣п╟п╫я│п╟ (getsid(2)),
п╦я│п©п╬п╩я▄п╥я┐п╣п╪я▀п╧ п©я─п╦ я─п╟п╠п╬я┌п╣ я│ п╬п╨п╫п╟п╪п╦ */
struct {
int32_t tv_sec; /* я│п╣п╨я┐п╫п╢я▀ */
int32_t tv_usec; /* п╪п╦п╨я─п╬я│п╣п╨я┐п╫п╢я▀ */
} ut_tv; /* п╡я─п╣п╪я▐ я│п╬п╥п╢п╟п╫п╦я▐ я█п╩п╣п╪п╣п╫я┌п╟ */ #else
long ut_session; /* ID я│п╣п╟п╫я│п╟ */
struct timeval ut_tv; /* п╡я─п╣п╪я▐ я│п╬п╥п╢п╟п╫п╦я▐ я█п╩п╣п╪п╣п╫я┌п╟ */ #endif
int32_t ut_addr_v6[4]; /* п╦п╫я┌п╣я─п╫п╣я┌-п╟п╢я─п╣я│ я┐п╢п╟п╩я▒п╫п╫п╬пЁп╬
я┐п╥п╩п╟; п╢п╩я▐ п╟п╢я─п╣я│п╟ IPv4 п╦я│п©п╬п╩я▄п╥я┐п╣я┌я│я▐
я┌п╬п╩я▄п╨п╬ ut_addr_v6[0] */
char __unused[20]; /* п╥п╟я─п╣п╥п╣я─п╡п╦я─п╬п╡п╟п╫п╬ п╢п╩я▐ п╠я┐п╢я┐я┴п╣пЁп╬
п╦я│п©п╬п╩я▄п╥п╬п╡п╟п╫п╦я▐ */ }; /* я─п╟п╥п╫п╬п╣ п╢п╩я▐ п╬п╠я─п╟я┌п╫п╬п╧ я│п╬п╡п╪п╣я│я┌п╦п╪п╬я│я┌п╦ */ #define ut_name ut_user #ifndef _NO_UT_TIME #define ut_time ut_tv.tv_sec #endif #define ut_xtime ut_tv.tv_sec #define ut_addr ut_addr_v6[0]

п╜я┌п╟ я│я┌я─я┐п╨я┌я┐я─п╟ п╢п╟п╣я┌ п╦п╪я▐ я│п©п╣я├п╦п╟п╩я▄п╫п╬п╪я┐ я└п╟п╧п╩я┐, я│п╡я▐п╥п╟п╫п╫п╬п╪я┐ я│ я┌п╣я─п╪п╦п╫п╟п╩п╬п╪ п©п╬п╩я▄п╥п╬п╡п╟я┌п╣п╩я▐, п╦п╪п╣п╫п╣п╪ п╡я┘п╬п╢п╟ п©п╬п╩я▄п╥п╬п╡п╟я┌п╣п╩я▐ п╦ п╡я─п╣п╪п╣п╫п╣п╪ п╡я┘п╬п╢п╟ п╡ п╡п╦п╢п╣ п╨п╟п╨ я┐ time(2). п÷п╬п╩я▐ я│я┌я─п╬п╨ п╥п╟п╨п╟п╫я┤п╦п╡п╟я▌я┌я│я▐ '\0', п╣я│п╩п╦ п╬п╫п╦ п╨п╬я─п╬я┤п╣, я┤п╣п╪ я─п╟п╥п╪п╣я─ п©п╬п╩я▐.

п║п╟п╪я▀п╣ п©п╣я─п╡я▀п╣ п╥п╟п©п╦я│п╦ я│п╬п╥п╢п╟я▌я┌я│я▐ init(8) п©п╬я│п╩п╣ п╬п╠я─п╟п╠п╬я┌п╨п╦ inittab(5). п╔п╬я┌я▐ п©п╣я─п╣п╢ я┌п╣п╪, п╨п╟п╨ я█п╩п╣п╪п╣п╫я┌ п╬п╠я─п╟п╠п╟я┌я▀п╡п╟п╣я┌я│я▐, init(8) п╬я┤п╦я┴п╟п╣я┌ utmp, я┐я│я┌п╟п╫п╟п╡п╩п╦п╡п╟я▐ ut_type я─п╟п╡п╫я▀п╪ DEAD_PROCESS, п╥п╟п©п╬п╩п╫я▐я▐ ut_user, ut_host п╦ ut_time п╫я┐п╩п╣п╡я▀п╪п╦ п╠п╟п╧я┌п╟п╪п╦ п╡ п╥п╟п©п╦я│я▐я┘, п╡ п╨п╬я┌п╬я─я▀я┘ ut_type п╫п╣ я─п╟п╡п╣п╫ DEAD_PROCESS п╦п╩п╦ RUN_LVL п╦ п╢п╩я▐ п╨п╬я┌п╬я─я▀я┘ п╫п╣ я│я┐я┴п╣я│я┌п╡я┐п╣я┌ п©я─п╬я├п╣я│я│п╬п╡ я│ PID, я─п╟п╡п╫я▀п╪ ut_pid. п∙я│п╩п╦ п╫п╣ п╫п╟п╧п╢п╣п╫п╬ п╫п╦ п╬п╢п╫п╬п╧ п©я┐я│я┌п╬п╧ п╥п╟п©п╦я│п╦ я│ п╫я┐п╤п╫я▀п╪ ut_id, я┌п╬ init(8) я│п╬п╥п╢п╟п╣я┌ п╫п╬п╡я┐я▌. п·п╫ я┐я│я┌п╟п╫п╟п╡п╩п╦п╡п╟п╣я┌ п╥п╫п╟я┤п╣п╫п╦п╣ ut_id п╦п╥ inittab, ut_pid п╦ ut_time п╦п╥ я┌п╣п╨я┐я┴п╦я┘ п╥п╫п╟я┤п╣п╫п╦п╧ п╦ ut_type п╡ INIT_PROCESS.

mingetty(8) (п╦п╩п╦ agetty(8)) п╫п╟я┘п╬п╢п╦я┌ я█п╩п╣п╪п╣п╫я┌я▀ п©п╬ п╦я┘ п╦п╢п╣п╫я┌п╦я└п╦п╨п╟я┌п╬я─я┐ PID, п╪п╣п╫я▐п╣я┌ ut_type п╫п╟ LOGIN_PROCESS, п╦п╥п╪п╣п╫я▐п╣я┌ ut_time, я┐я│я┌п╟п╫п╟п╡п╩п╦п╡п╟п╣я┌ ut_line п╦ п╬п╤п╦п╢п╟п╣я┌ я┐я│я┌п╟п╫п╬п╡п╨п╦ я│п╬п╣п╢п╦п╫п╣п╫п╦я▐.login(1), п©п╬я│п╩п╣ я┌п╬пЁп╬ п╨п╟п╨ п©п╬п╩я▄п╥п╬п╡п╟я┌п╣п╩я▄ п╠я▀п╩ п╦п╢п╣п╫я┌п╦я└п╦я├п╦я─п╬п╡п╟п╫, п╪п╣п╫я▐п╣я┌ ut_type п╫п╟ USER_PROCESS, п╦п╥п╪п╣п╫я▐п╣я┌ ut_time п╦ я┐я│я┌п╟п╫п╟п╡п╩п╦п╡п╟п╣я┌ ut_host п╦ ut_addr. п▓ п╥п╟п╡п╦я│п╦п╪п╬я│я┌п╦ п╬я┌ mingetty(8) (п╦п╩п╦ agetty(8)) п╦ login(1), п╥п╟п©п╦я│п╦ п╪п╬пЁя┐я┌ п╠я▀я┌я▄ я─п╟я│п©п╬п╩п╬п╤п╣п╫я▀ п╡ я│п╬п╬я┌п╡п╣я┌я│я┌п╡п╦п╦ я│ ut_line, п╡п╪п╣я│я┌п╬ п╠п╬п╩п╣п╣ п©я─п╣п╢п©п╬я┤п╦я┌п╟п╣п╪п╬пЁп╬ ut_pid.

п п╬пЁп╢п╟ init(8) п╬п╠п╫п╟я─я┐п╤п╦п╡п╟п╣я┌, я┤я┌п╬ п©я─п╬я├п╣я│я│ п╥п╟п╡п╣я─я┬п╦п╩я│я▐, п╬п╫ п╫п╟я┘п╬п╢п╦я┌ п╣пЁп╬ п╥п╟п©п╦я│я▄ п╡ utmp п©п╬ ut_pid, я┐я│я┌п╟п╫п╟п╡п╩п╦п╡п╟п╣я┌ ut_type п╡ DEAD_PROCESS, п╦ п╥п╟я┌п╦я─п╟п╣я┌ ut_user, ut_host п╦ ut_time п╫я┐п╩я▐п╪п╦.

xterm(1) п╦ п╢я─я┐пЁп╦п╣ я█п╪я┐п╩я▐я┌п╬я─я▀ я┌п╣я─п╪п╦п╫п╟п╩п╬п╡ я│п╟п╪п╬я│я┌п╬я▐я┌п╣п╩я▄п╫п╬ я│п╬п╥п╢п╟я▌я┌ п╥п╟п©п╦я│я▄ USER_PROCESS п╦ пЁп╣п╫п╣я─п╦я─я┐я▌я┌ ut_id, п╦я│п©п╬п╩я▄п╥я┐я▐ п©п╬я│п╩п╣п╢п╫п╦п╣ п╢п╡п╣ п╠я┐п╨п╡я▀ п╦п╪п╣п╫п╦ п╦п╥ п╦п╪п╣п╫п╦ я┌п╣я─п╪п╦п╫п╟п╩п╟ (я│п╦п╪п╡п╬п╩я▀ п©п╬я│п╩п╣ /dev/[pt]ty). п∙я│п╩п╦ п╬п╫п╦ п╬п╠п╫п╟я─я┐п╤п╦п╡п╟я▌я┌ DEAD_PROCESS п╢п╩я▐ я█я┌п╬пЁп╬ ID, я┌п╬ п╬п╫п╦ я┐п╢п╟п╩я▐я▌я┌ п╣пЁп╬ п╦п╩п╦ я│п╬п╥п╢п╟я▌я┌ п╫п╬п╡я▀п╧ я█п╩п╣п╪п╣п╫я┌. п∙я│п╩п╦ п╡п╬п╥п╪п╬п╤п╫п╬, п╬п╫п╦ п©п╬п╪п╣я┌я▐я┌ п╣пЁп╬ п╨п╟п╨ DEAD_PROCESS п©я─п╦ п╡я▀я┘п╬п╢п╣; п©я─п╣п╢п©п╬п╩п╟пЁп╟п╣я┌я│я▐, я┤я┌п╬ п╬п╫п╦ я┌п╟п╨п╤п╣ п╬п╠п╫я┐п╩я▐я▌я┌ ut_line, ut_time, ut_user п╦ ut_host.

telnetd(8) я┐я│я┌п╟п╫п╟п╡п╩п╦п╡п╟п╣я┌ я█п╩п╣п╪п╣п╫я┌ LOGIN_PROCESS п╦ п╬я│я┌п╟п╡п╩я▐п╣я┌ п╬я│я┌п╟п╩я▄п╫п╬п╣, п╨п╟п╨ п╬п╠я▀я┤п╫п╬, п╟я─пЁя┐п╪п╣п╫я┌я┐ п╢п╩я▐ login(1). п÷п╬я│п╩п╣ п╥п╟п╡п╣я─я┬п╣п╫п╦я▐ я│п╣п╟п╫я│п╟ telnet, telnetd(8) п╬я┤п╦я┴п╟п╣я┌ utmp п╡я▀я┬п╣п╬п©п╦я│п╟п╫п╫я▀п╪ п©я┐я┌п╣п╪.

п▓ я└п╟п╧п╩ wtmp п╥п╟п©п╦я│я▀п╡п╟я▌я┌я│я▐ п╡я│п╣ п╡я┘п╬п╢я▀ п╦ п╡я▀я┘п╬п╢я▀ п╡ я│п╦я│я┌п╣п╪я┐. п∙пЁп╬ я└п╬я─п╪п╟я┌ п╡ я┌п╬я┤п╫п╬я│я┌п╦ п©п╬я┘п╬п╤ п╫п╟ я└п╬я─п╪п╟я┌ utmp, п╥п╟ п╦я│п╨п╩я▌я┤п╣п╫п╦п╣п╪ я┌п╬пЁп╬, я┤я┌п╬ п©я┐я│я┌п╬п╣ п╦п╪я▐ п©п╬п╩я▄п╥п╬п╡п╟я┌п╣п╩я▐ п╬п╥п╫п╟я┤п╟п╣я┌ п╡я▀я┘п╬п╢ п╦п╥ я│п╦я│я┌п╣п╪я▀ я┤п╣я─п╣п╥ я│п╡я▐п╥п╟п╫п╫я▀п╧ я┌п╣я─п╪п╦п╫п╟п╩. п я─п╬п╪п╣ я┌п╬пЁп╬, п╫п╟п╥п╡п╟п╫п╦п╣ я┌п╣я─п╪п╦п╫п╟п╩п╟ ~ я│ п╦п╪п╣п╫п╣п╪ п©п╬п╩я▄п╥п╬п╡п╟я┌п╣п╩я▐ shutdown п╦п╩п╦ reboot п╬п╥п╫п╟я┤п╟п╣я┌ п╡я▀п╨п╩я▌я┤п╣п╫п╦п╣ я│п╦я│я┌п╣п╪я▀ п╦п╩п╦ п╣я▒ п©п╣я─п╣п╥п╟пЁя─я┐п╥п╨я┐, п╟ п©п╟я─п╟ п╫п╟п╥п╡п╟п╫п╦п╧ я┌п╣я─п╪п╦п╫п╟п╩п╟ |/} п╬п╥п╫п╟я┤п╟п╣я┌ я│я┌п╟я─п╬п╣/п╫п╬п╡п╬п╣ я│п╦я│я┌п╣п╪п╫п╬п╣ п╡я─п╣п╪я▐ п╡ я│п╩я┐я┤п╟п╣, п╨п╬пЁп╢п╟ date(1) п╪п╣п╫я▐п╣я┌ п╦я┘. п▓ wtmp п©п╦я┬я┐я┌ login(1), init(8) п╦ п╫п╣п╨п╬я┌п╬я─я▀п╣ п╡п╣я─я│п╦п╦ getty(8) (п╫п╟п©я─п╦п╪п╣я─, mingetty(8) п╦п╩п╦ agetty(8)). п²п╦ п╬п╢п╫п╟ п╦п╥ я█я┌п╦я┘ п©я─п╬пЁя─п╟п╪п╪ п╫п╣ я│п╬п╥п╢п╟п╣я┌ я└п╟п╧п╩, п©п╬я█я┌п╬п╪я┐ п╣я│п╩п╦ п╬п╫ я┐п╢п╟п╩я▒п╫, я┌п╬ п╡п╣п╢п╣п╫п╦п╣ п╥п╟п©п╦я│п╣п╧ п╥п╟п╨п╟п╫я┤п╦п╡п╟п╣я┌я│я▐.

п╓п░п≥п⌡п╚

/var/run/utmp
/var/log/wtmp

п║п·п·п╒п▓п∙п╒п║п╒п▓п≤п∙ п║п╒п░п²п■п░п═п╒п░п°

п▓ POSIX.1 я│я┌я─я┐п╨я┌я┐я─п╟ utmp п╫п╣ п╬п©я─п╣п╢п╣п╩п╣п╫п╟, п╫п╬ п╣я│я┌я▄ п©п╬я┘п╬п╤п╟я▐ я│ п╦п╪п╣п╫п╣п╪ utmpx п╦ п©п╬п╩я▐п╪п╦ ut_type, ut_pid, ut_line, ut_id, ut_user п╦ ut_tv. п▓ POSIX.1 п╫п╣ я┐п╨п╟п╥п╟п╫ я─п╟п╥п╪п╣я─ п©п╬п╩п╣п╧ ut_line п╦ ut_user.

п▓ Linux я│я┌я─я┐п╨я┌я┐я─п╟ utmpx я│п╬п╡п©п╟п╢п╟п╣я┌ я│п╬ я│я┌я─я┐п╨я┌я┐я─п╬п╧ utmp.

п║я─п╟п╡п╫п╣п╫п╦п╣ я│п╬ я│я┌п╟я─я▀п╪п╦ я│п╦я│я┌п╣п╪п╟п╪п╦

п▓ Linux п╥п╟п©п╦я│п╦ utmp п╫п╣ я│п╩п╣п╢я┐я▌я┌ я└п╬я─п╪п╟я┌п╟п╪ п╫п╦ v7/BSD п╫п╦ System V; п╬п╫п╦ я│п╬п╢п╣я─п╤п╟я┌ п©п╬п╩я▐ п╦п╥ п╬п╠п╬п╦я┘ я└п╬я─п╪п╟я┌п╬п╡.

v7/BSD п╦п╪п╣п╣я┌ п╪п╣п╫я▄я┬п╣п╣ п╨п╬п╩п╦я┤п╣я│я┌п╡п╬ п©п╬п╩п╣п╧; п╡п╟п╤п╫п╣п╣ п╡я│п╣пЁп╬ я┌п╬, я┤я┌п╬ п╡ п╫я▒п╪ п╫п╣я┌ ut_type, п╨п╬я┌п╬я─я▀п╧ п╥п╟я│я┌п╟п╡п╩я▐п╣я┌ v7/BSD-я│п╬п╡п╪п╣я│я┌п╦п╪я▀п╣ п©я─п╬пЁя─п╟п╪п╪я▀ п╡я▀п╡п╬п╢п╦я┌я▄, п╨ п©я─п╦п╪п╣я─я┐, п╬я┌я─п╟п╠п╬я┌п╟п╡я┬п╦п╣ п╥п╟п©п╦я│п╦ п╦п╩п╦ п╥п╟п©п╦я│п╦ п╬ п╡я┘п╬п╢п╣ я│п╦я│я┌п╣п╪я┐. п╒п╟п╨п╤п╣ п╡ я█я┌п╬п╧ п╡п╣я─я│п╦п╦ п╬я┌я│я┐я┌я│я┌п╡я┐п╣я┌ я└п╟п╧п╩ п╫п╟я│я┌я─п╬п╧п╨п╦, п╨п╬я┌п╬я─я▀п╧ п╬п©я─п╣п╢п╣п╩я▐п╣я┌ п╪п╣я│я┌п╟ п╢п╩я▐ я│п╣п╟п╫я│п╬п╡. п▓я│я▒ я█я┌п╬ п╢п╣п╩п╟п╣я┌я│я▐ п╡ BSD п╦п╥-п╥п╟ п╬я┌я│я┐я┌я│я┌п╡п╦я▐ п©п╬п╩я▐ ut_id.

п▓ Linux (п╨п╟п╨ п╡ System V) п©п╬п╩п╣ ut_id п╥п╟п©п╦я│п╦ п╫п╦п╨п╬пЁп╢п╟ п╫п╣ п╪п╣п╫я▐п╣я┌я│я▐ п©п╬я│п╩п╣ я┌п╬пЁп╬, п╨п╟п╨ п╬п╢п╦п╫ я─п╟п╥ я┐я│я┌п╟п╫п╬п╡п╩п╣п╫п╬, я┤я┌п╬ п©п╬п╥п╡п╬п╩я▐п╣я┌ я─п╣п╥п╣я─п╡п╦я─п╬п╡п╟я┌я▄ п╪п╣я│я┌п╬ п╠п╣п╥ п╫п╣п╬п╠я┘п╬п╢п╦п╪п╬я│я┌п╦ п╡ я└п╟п╧п╩п╣ п╫п╟я│я┌я─п╬п╧п╨п╦. п·я┤п╦я┴п╣п╫п╦п╣ ut_id п╪п╬п╤п╣я┌ п©я─п╦п╡п╣я│я┌п╦ п╨ я│п╬п©п╣я─п╫п╦я┤п╣я│я┌п╡я┐, п©я─п╦п╡п╬п╢я▐я┴п╣п╪я┐ п╨ п©п╬п╡я─п╣п╤п╢п╣п╫п╦я▌ я█п╩п╣п╪п╣п╫я┌п╬п╡ utmp п╦ п╫п╟я─я┐я┬п╣п╫п╦я▌ п╠п╣п╥п╬п©п╟я│п╫п╬я│я┌п╦ я│п╦я│я┌п╣п╪я▀. п·я┤п╦я│я┌п╨п╟ п╡я▀я┬п╣я┐п©п╬п╪я▐п╫я┐я┌я▀я┘ п©п╬п╩п╣п╧ п╫я┐п╩я▐п╪п╦ п╫п╣ я┌я─п╣п╠я┐п╣я┌я│я▐ я│п╬пЁп╩п╟я│п╫п╬ я│п╣п╪п╟п╫я┌п╦п╨п╣ System V, п╫п╬ п©п╬п╥п╡п╬п╩я▐п╣я┌ п╥п╟п©я┐я│п╨п╟я┌я▄ п╪п╫п╬пЁп╦п╣ п©я─п╬пЁя─п╟п╪п╪я▀, п╨п╬я┌п╬я─я▀п╣ п╦я│п©п╬п╩я▄п╥я┐я▌я┌ я│п╣п╪п╟п╫я┌п╦п╨я┐ BSD п╦ п╨п╬я┌п╬я─я▀п╣ п╫п╣ п╦п╥п╪п╣п╫я▐я▌я┌ utmp. Linux п╦я│п©п╬п╩я▄п╥я┐п╣я┌ я│п╬пЁп╩п╟я┬п╣п╫п╦п╣ BSD п©я─п╦ я─п╟п╠п╬я┌п╣ я│ я│п╬п╢п╣я─п╤п╦п╪я▀п╪ я│я┌я─п╬п╨, п╨п╟п╨ п╬п©п╦я│п╟п╫п╬ я─п╟п╫п╣п╣.

п▓ System V п╫п╣я┌ п©п╬п╩п╣п╧ ut_host п╦ ut_addr_v6.

п≈п░п°п∙п╖п░п²п≤п╞

п▓ п╬я┌п╩п╦я┤п╦п╦ п╬я┌ п╢я─я┐пЁп╦я┘ я│п╦я│я┌п╣п╪, пЁп╢п╣ п©я─п╬я┌п╬п╨п╬п╩п╦я─п╬п╡п╟п╫п╦п╣ я│п╬п╬п╠я┴п╣п╫п╦п╧ utmp п╪п╬п╤п╣я┌ п╠я▀я┌я▄ п╡я▀п╨п╩я▌я┤п╣п╫п╬ п©я─п╬я│я┌я▀п╪ я┐п╢п╟п╩п╣п╫п╦п╣п╪ я└п╟п╧п╩п╟, п╡ Linux я└п╟п╧п╩ utmp п╡я│п╣пЁп╢п╟ п╢п╬п╩п╤п╣п╫ я│я┐я┴п╣я│я┌п╡п╬п╡п╟я┌я▄. п∙я│п╩п╦ п╡я▀ я┘п╬я┌п╦я┌п╣ п╬я┌п╨п╩я▌я┤п╦я┌я▄ who(1), я┌п╬ п©я─п╬я│я┌п╬ я│п╢п╣п╩п╟п╧я┌п╣ я┤я┌п╣п╫п╦п╣ utmp п╫п╣п╢п╬я│я┌я┐п©п╫я▀п╪ п╡я│п╣п╪ п╬я│я┌п╟п╩я▄п╫я▀п╪.

п╓п╬я─п╪п╟я┌ я└п╟п╧п╩п╟ п╥п╟п╡п╦я│п╦я┌ п╬я┌ п╟я─я┘п╦я┌п╣п╨я┌я┐я─я▀, п©п╬я█я┌п╬п╪я┐ я─п╣п╨п╬п╪п╣п╫п╢я┐п╣я┌я│я▐, я┤я┌п╬п╠я▀ п╬п╫ п╬п╠я─п╟п╠п╟я┌я▀п╡п╟п╩я│я▐ я┌п╬п╩я▄п╨п╬ п╫п╟ п╪п╟я┬п╦п╫п╟я┘ я│ п╬п╢п╦п╫п╟п╨п╬п╡п╬п╧ п╟я─я┘п╦я┌п╣п╨я┌я┐я─п╬п╧.

п≈п╟п╪п╣я┌п╦п╪, я┤я┌п╬ п╫п╟ п╢п╡я┐п╟я─я┘п╦я┌п╣п╨я┌я┐я─п╫я▀я┘ п©п╩п╟я┌я└п╬я─п╪п╟я┘, я┌п╬ п╣я│я┌я▄ я│п╦я│я┌п╣п╪п╟я┘, п╨п╬я┌п╬я─я▀п╣ п©п╬п╥п╡п╬п╩я▐я▌я┌ п╥п╟п©я┐я│п╨п╟я┌я▄ я│я─п╟п╥я┐ 32- п╦ 64-п╠п╦я┌п╫я▀п╣ п©я─п╦п╩п╬п╤п╣п╫п╦я▐ (x86-64, ppc64, s390x п╦ я┌.п╢.), п©п╬п╩п╣ ut_tv п╦п╪п╣п╣я┌ п╬п╢п╦п╫п╟п╨п╬п╡я▀п╧ я─п╟п╥п╪п╣я─ п╡ 32- п╦ 64-п╠п╦я┌п╫п╬п╪ я─п╣п╤п╦п╪п╣. п╜я┌п╬ п╤п╣ п╬я┌п╫п╬я│п╦я┌я│я▐ п╨ ut_session п╦ ut_time, п╣я│п╩п╦ п╬п╫п╦ п╣я│я┌я▄. п╜я┌п╬ п©п╬п╥п╡п╬п╩я▐п╣я┌ п╦я│п©п╬п╩я▄п╥п╬п╡п╟я┌я▄ я└п╟п╧п╩я▀ п╢п╟п╫п╫я▀я┘ п╦ п©п╟п╪я▐я┌я▄ п╬п╢п╫п╬п╡я─п╣п╪п╣п╫п╫п╬ п╦ п╡ 32- п╦ п╡ 64-п╠п╦я┌п╫я▀я┘ п©я─п╦п╩п╬п╤п╣п╫п╦я▐я┘. п■п╟п╫п╫п╟я▐ п╡п╬п╥п╪п╬п╤п╫п╬я│я┌я▄ п╢п╬я│я┌п╦пЁп╟п╣я┌я│я▐ я│п╪п╣п╫п╬п╧ я┌п╦п©п╟ ut_session п╫п╟ int32_t п╦ ut_tv п╫п╟ я│я┌я─я┐п╨я┌я┐я─я┐ я│ п╢п╡я┐п╪я▐ п©п╬п╩я▐п╪п╦ int32_ttv_sec п╦ tv_usec. п╒п╟п╨ п╨п╟п╨ ut_tv п╫п╣ п╪п╬п╤п╣я┌ п╠я▀я┌я▄ п╬п╢п╦п╫п╟п╨п╬п╡п╟ я│ struct timeval, я┌п╬ п╡п╪п╣я│я┌п╬ п╡я▀п╥п╬п╡п╟:

gettimeofday((struct timeval *) &ut.ut_tv, NULL);

п╢п╩я▐ я┐я│я┌п╟п╫п╬п╡п╨п╦ п╥п╫п╟я┤п╣п╫п╦я▐ я█я┌п╬пЁп╬ п©п╬п╩я▐ я─п╣п╨п╬п╪п╣п╫п╢я┐п╣я┌я│я▐ п╦я│п©п╬п╩я▄п╥п╬п╡п╟я┌я▄:

struct utmp ut;
struct timeval tv;
gettimeofday(&tv, NULL);
ut.ut_tv.tv_sec = tv.tv_sec;
ut.ut_tv.tv_usec = tv.tv_usec;

п≈п╟п╪п╣я┌п╦п╪, я┤я┌п╬ я│я┌я─я┐п╨я┌я┐я─п╟ utmp, п╬п©п╦я│п╟п╫п╫п╟я▐ п╡ libc5, п╦п╥п╪п╣п╫п╦п╩п╟я│я▄ п╡ libc6. п≤п╥-п╥п╟ я█я┌п╬пЁп╬ п╢п╡п╬п╦я┤п╫я▀п╣ я└п╟п╧п╩я▀, п╦я│п©п╬п╩я▄п╥я┐я▌я┴п╦п╣ я│я┌п╟я─я┐я▌ я│я┌я─я┐п╨я┌я┐я─я┐ п╦п╥ libc5, п╠я┐п╢я┐я┌ п©п╬п╡я─п╣п╤п╢п╟я┌я▄ /var/run/utmp п╦/п╦п╩п╦ /var/log/wtmp.

п·п╗п≤п▒п п≤

п╜я┌п╦ я│я┌я─п╟п╫п╦я├я▀ п╬я│п╫п╬п╡п╟п╫я▀ п╫п╟ п╪п╟я┌п╣я─п╦п╟п╩п╟я┘ libc5, п╫п╬п╡я▀п╣ п╡п╣я─я│п╦п╦ п╪п╬пЁя┐я┌ я─п╟п╠п╬я┌п╟я┌я▄ п╦п╫п╟я┤п╣.

п║п°п·п╒п═п≤п╒п∙ п╒п░п п√п∙

ac(1), date(1), last(1), login(1), who(1), getutent(3), getutmp(3), login(3), logout(3), logwtmp(3), updwtmp(3), init(8)

2008-10-10 Linux